package com.pn.mapper;

import com.pn.entity.Role;
import com.pn.page.Page;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;

@Mapper
public interface RoleMapper {
    //查询状态正常的所有角色的方法
    public List<Role> findAllRole();

    //根据用户id查询用户已分配的角色
    public List<Role> findRolesByUserId(Integer userId);

    /**
     * /根据用户 id 删除给用户已分配的所有角色
     *
     * @param userId 用户表ID
     * @return 删除结果-布尔值
     */
    public int delRoleByUserId(Integer userId);

    /**
     * 根据角色名称查询角色 id
     *
     * @param roleName 角色名字
     * @return 角色查询结果
     */
    public int getRoleIdByName(String roleName);

    /**
     * 添加用户角色关系（插入和更新是没有返回值的）
     *
     * @param userId 用户表ID
     * @param roleId 角色表ID
     */
    public void insertUserRole(Integer userId, Integer roleId);

    //查询角色总行数
    public int selectRoleCount(Role role);

    //    分页查询角色方法
    public List<Role> selectRolePage(@Param("page") Page page, @Param("role") Role role);

    //根据角色名称或者角色代码查询角色的方法
    public Role findRoleByNameOrCode(String roleName, String roleCode);

    //    添加角色的方法
    public int insertRole(Role role);

    //    添加角色ID修改角色状态的方法
    public int updateRoleState(Role role);

    public List<Integer> findAuthIds(Integer roleId);

    //   根据角色删除角色的方法
    public int deleteRoleById(Integer integer);

    //    根据角色ID修改角色描述
    public int updateDescById(Role role);
}
